;:sys36864
	;.opt oo
	*= $c800
vic	=$d000
page	=648
bank	=56576
clrscr	=$e544
cint	=$ff81
switch	=$291
tmp	=2
konf	=1
irqvec	=$314
oldirq	=$ea31
adr1	=58200
adr2	=58208
alt1	=$eb84
alt2	=$ebc5
alt3	=$ec06
keyvec	=$28f
altkey	=$eae4
akt	=$f5
tabtab	=$eb79
keynr	=$cb
f1	=133
f8	=$8c
shift	=$28d
calc	=$e9f0
farbram	=$ea24
bild	=$d1
farb	=$f3
zeile	=214
getx	=$b7f1
komma	=$aefd
frestr	=$b6a3
strres	=$b475
qfindvar	=$b08b
strout	=$ab1e
para	=$61
varadr	=$49
crs1	=$cc
crs2	=$cd
crs3	=$cf
latch	=$c000
print	=$ffd2
getkey	=$ffe4
space	=$ab3f
frmevl	=$ad9e
stradr	=$22
str1	=247
str2	=249
illquan	=$b248
latch2	=$c100
clrx	=$e9ff
setcr	=58732
spalte	=211
return	=$aad7
pointer	=2040+49152
esc	=123
getpar	=57812
load	=$ffd5
readst	=$ffb7
loadver	=10
error1	=57593
error2	=57756
quote	=212
	jmp text
	jmp pic
	jmp irqon
	jmp irqoff
	jmp blocksatz
	jmp inform
	jmp title
	jmp decode
	jmp wandel
	jmp laden
flag	brk
cnt1	.byt 1
cnt2	.byt 1
cnt3	.byt 1
cnt4	.byt 1
merk	.byt 55
lan	brk
blpos	brk
line1	brk
line2	brk
point1	brk
point2	brk
wart	brk
time	brk
step	.byt 1
set4	.byt 4
tuerk	.byt 1
neue	.byt 164,165,166,170,167,168,169,163
delt	.byte "\x9d \x9d"
	brk
findvar	jmp qfindvar
text	jsr vicinit
	lda #148
	sta bank
	lda #24
	sta vic+24
	lda #196
	sta page
	lda #128
	sta switch
	ldx #0
	jsr swap
	jmp clrscr
pic	jsr vicinit
	ldx #-1
	jsr swap
	ldx #4
	ldy #0
	sty tmp
	lda #196
	sta page
	sta tmp+1
	lda #148
	sta bank
	lda #18
colin	sta (tmp),y
	iny
	bne colin
	inc tmp+1
	dex
	bne colin
	lda #29
	sta vic+24
	lda #59
	sta vic+17
	lda #216
	sta vic+22
	sty pointer
	ldx #63
	tya
clrsp	sta latch,x
	dex
	bne clrsp
	lda #1
	sta vic+21
	lda #40
	sta vic
	lda #58
	sta vic+1
	inc vic+29
	ldx #15
	lda #-1
sp	sta latch,x
	dex
	bpl sp
	lda #216
	sta tmp+1
	ldx #4
	lda #1
colram	sta (tmp),y
	iny
	bne colram
	inc tmp+1
	dex
	bne colram
	rts
swap	cpx flag
	bne scheisse
	rts
scheisse	sei
	lda konf
	pha
	lda #48
	sta konf
	ldy #0
	sty tmp
	sty tmp+2
	lda #160
	sta tmp+1
	lda #224
	sta tmp+3
	ldx #32
swaplp	lda (tmp),y
	pha
	lda (tmp+2),y
	sta (tmp),y
	pla
	sta (tmp+2),y
	dey
	bne swaplp
	inc tmp+1
	inc tmp+3
	dex
	bne swaplp
	lda flag
	eor #-1
	sta flag
	pla
	sta konf
	cli
	rts
vicinit	jsr cint
	lda #0
	sta vic+32
	sta vic+33
	jmp keyinit
ram	lda konf
	sta merk
	lda #48
	sta konf
	rts
rom	lda merk
	sta konf
	rts
irqon	sei
	lda #<neuirq
	ldy #>neuirq
set	sta irqvec
	sty irqvec+1
	cli
	rts
irqoff	sei
	lda #<oldirq
	ldy #>oldirq
	bne set
neuirq	lda tmp
	pha
	lda tmp+1
	pha
	jsr ram
	jsr irq
	jsr rom
	pla
	sta tmp+1
	pla
	sta tmp
	jmp oldirq
irqok	dec cnt1
	bne nix1
	lda #4
	sta cnt1
	lda #<adr1
	ldy #>adr1
	sta tmp
	sty tmp+1
	ldy #0
	lda adr1
	pha
copy1	iny
	lda (tmp),y
	dey
	sta (tmp),y
	iny
	cpy #7
	bcc copy1
	pla
	sta (tmp),y
nix1	dec cnt2
	bne nix2
	lda #3
	sta cnt2
	lda #<adr1
	ldy #>adr2
	sta tmp
	sty tmp+1
	ldy #7
copy2	lda (tmp),y
	asl
	adc #0
	sta (tmp),y
	dey
	bpl copy2
nix2	dec cnt3
	bne nix3
	lda #3
	sta cnt3
	lda #<adr2
	ldy #>adr2
	sta tmp
	sty tmp+1
	ldy #7
	lda (tmp),y
	pha
copy3	dey
	lda (tmp),y
	iny
	sta (tmp),y
	dey
	bne copy3
	pla
	sta (tmp),y
nix3	dec cnt4
	bne nix4
	lda set4
	sta cnt4
	lda #<adr2
	ldy #>adr2
	sta tmp
	sty tmp+1
	ldy #7
copy4	lda (tmp),y
	lsr
	bcc nix7
	ora #128
nix7	sta (tmp),y
	dey
	bpl copy4
nix4	dec tuerk
	beq manage
	rts
irq	lda flag
	bne nix4
	jmp irqok
manage	lda #12
	sta tuerk
	lda set4
	clc
	adc step
	sta set4
	cmp #2
	bcc turn
	cmp #5
	bcc rtt
turn	lda step
	eor #254
	sta step
rtt	rts
keyinit	lda #<neukey
	ldy #>neukey
	sta keyvec
	sty keyvec+1
	rts
neukey	lda shift
	asl
	cmp #8
	bcc ok8
	lda #6
ok8	tax
	lda tabtab,x
	sta akt
	lda tabtab+1,x
	sta akt+1
	ldy keynr
	lda (akt),y
	cmp #f1
	bcc normal
	cmp #f8+1
	bcs normal
	sec
	sbc #f1
	tax
	lda neue,x
normal	jmp altkey
blocksatz	ldx #0
	lda zeile
	pha
	lda #20
	sta blpos
blocklp	jsr calc
	jsr farbram
testneu	ldy #39
	lda #" "
	cmp (bild),y
	bne voll
	ldy #0
	cmp (bild),y
	beq voll
	lda (bild),y
	cmp #"!"
	beq rump
	jsr testlen
	bcs voll
	jsr sab
	ldy blpos
suchsp	lda (bild),y
	cmp #" "
	beq fund
	iny
	cpy lan
	bcc test2
	ldy #1
test2	cpy blpos
	bne suchsp
	beq voll
fund	iny
	sty blpos
	ldy #39
ruk	dey
	lda (bild),y
	pha
	lda (farb),y
	iny
	sta (farb),y
	pla
	sta (bild),y
	dey
	cpy blpos
	bne ruk
	beq hase
voll	inx
	cpx #25
	bcc blocklp
	pla
	sta zeile
	tax
	jmp calc
hase	lda #" "
	sta (bild),y
	inc blpos
	bne testneu
sab	lda blpos
	beq nu
	cmp lan
	bcc x
	sbc lan
	sta blpos
	jmp sab
x	rts
nu	inc blpos
	bne sab
testlen	ldy #39
tl	dey
	beq n
	lda (bild),y
	cmp #" "
	beq tl
	iny
	sty lan
	clc
	rts
n	sec
	rts
rump	ldy #1
rulo	lda (bild),y
	pha
	lda (farb),y
	dey
	sta (farb),y
	pla
	sta (bild),y
	iny
	iny
	cpy #40
	bcc rulo
	dey
	lda #" "
	sta (bild),y
	bne voll
inform	jsr lenght
	jsr findvar
	sta varadr
	sty varadr+1
	jsr frestr
	ldx #0
	stx tmp
keylp	lda #0
	sta crs1
	sta quote
wkey	jsr getkey
	beq wkey
	ldx #2
	stx crs2
wx	ldx crs3
	bne wx
	inc crs1
	cmp #13
	bne letter
string	lda tmp
	jsr strres
	ldy #2
setpar	lda para,y
	sta (varadr),y
	dey
	bpl setpar
	iny
settxt	cpy tmp
	beq carried
	lda latch,y
	sta (para+1),y
	iny
	bne settxt
carried	rts
letter	cmp #20
	beq del
	cmp #32
	bcs ok1
wrong	jmp keylp
ok1	cmp #128
	bcc ok
	cmp #149
	bcc wrong
	cmp #156
	bcc ok
	cmp #160
	bcc wrong
ok	ldx tmp
	cpx tmp+1
	bcs wrong
	sta latch,x
	jsr print
	inc tmp
	jmp keylp
lenght	jsr getx
	stx tmp+1
	jsr komma
	jmp clranf
del	ldx tmp
	beq wrong
	lda #<delt
	ldy #>delt
	jsr strout
	dec tmp
	jmp keylp
clranf	ldx tmp+1
canf	beq again
	jsr space
	dex
	bne canf
again	ldx tmp+1
conf	beq auto
	lda #"\x9d"
	jsr print
	dex
	bne conf
auto	rts
sy	jmp $af08
title	jsr getline
	stx line1
	jsr fre2
	sta lan
	tay
	dey
	bpl trans1
ill	jmp sy
trans1	lda (stradr),y
	sta latch,y
	dey
	bpl trans1
	jsr getline
	stx line2
	jsr getstr
	pha
	tay
	dey
	bmi ill
trans2	lda (stradr),y
	sta latch2,y
	dey
	bpl trans2
	pla
	cmp lan
	bcc zukurz
	sta lan
zukurz	jsr getx
	stx wart
test	ldy lan
	lda latch2-1,y
	cmp #" "
	bne okay2
	dey
such2	dey
	lda latch2,y
	cmp #" "
	beq such2
	ldx lan
rueck2	lda latch2,y
	sta latch2-1,x
	dex
	dey
	bpl rueck2
	lda #" "
fill2	sta latch2-1,x
	dex
	bpl fill2
	bmi test
okay2	lda #0
	sta point2
	lda lan
	sta point1
ausgabe	lda line1
	sta zeile
	lda #0
	sta spalte
	jsr setcr
	lda #"\x94"
	jsr print
	ldx point1
	lda latch-1,x
	jsr print
	lda line2
	sta zeile
	lda #1
	sta spalte
	jsr setcr
	lda #20
	jsr print
	lda #38
	sta spalte
	jsr setcr
	ldx point2
	lda latch2,x
	jsr print
	jsr pause
	inc point2
	dec point1
	bne ausgabe
	jsr getx
	stx time
moment	jsr pause
	dec time
	bne moment
schieb	lda line1
	sta zeile
	lda #1
	sta spalte
	jsr setcr
	lda #20
	jsr print
	lda line2
	sta zeile
	lda #0
	sta spalte
	jsr setcr
	lda #"\x94"
	jsr print
	lda #32
	ldy #39
	sta (bild),y
	jsr return
	jsr pause
	dec lan
	bne schieb
	rts
pause	ldx wart
	ldy #0
pse	dey
	bne pse
	dex
	bne pse
	rts
getstr	jsr komma
	jsr frmevl
	jmp frestr
fre2	lda #" "
	ldy #0
fre3	sta latch,y
	sta latch2,y
	dey
	bne fre3
	beq getstr
getline	jsr getx
	cpx #25
	bcc okline
	jmp illquan
okline	jmp clrx
decode	sei
	jsr ram
	ldy #0
	sty tmp
	sty tmp+2
	lda #$e0
	sta tmp+1
	lda #$a0
	sta tmp+3
m1	jsr get
	cmp #esc
	beq m2
	jsr put
	jmp m1
m2	jsr get
	tax
	beq end
	jsr get
m3	jsr put
	dex
	bne m3
	beq m1
end	jsr rom
	cli
	rts
get	lda (tmp),y
	inc tmp
	bne rt
	inc tmp+1
rt	rts
put	sta (tmp+2),y
	inc tmp+2
	bne rt
	inc tmp+3
	rts
wandel	jsr getstr
	sta lan
	ldx #0
	ldy #0
wandle	cpy lan
	bcs off
	lda (stradr),y
	cmp #"\xa4"
	beq ae
	cmp #"\xa7"
	beq ae
	cmp #"\xa5"
	beq oe
	cmp #"\xa8"
	beq oe
	cmp #"\xa6"
	beq ue
	cmp #"\xa9"
	beq ue
	cmp #"\xaa"
	beq ss
	cmp #97
	bcc takeit
	cmp #219
	bcs takeit
	cmp #123
	bcc gross1
	cmp #193
	bcc takeit
	and #$7f
takeit	sta latch,x
	inx
	iny
	bne wandle
off	stx tmp
	jsr komma
	jsr findvar
	sta varadr
	sty varadr+1
	jsr frestr
	jmp string
gross1	sec
	sbc #32
	bne takeit
ae	lda #"a"
	.byt $2c
oe	lda #"o"
	.byt $2c
ue	lda #"u"
	sta latch,x
	inx
	lda #"e"
	bne takeit
ss	lda #"s"
	sta latch,x
	inx
	lda #"s"
	bne takeit
laden	jsr komma
	lda #0
	sta loadver
	jsr getpar
	lda loadver
	ldx #0
	ldy #$e0
	jsr load
	bcc okay
	jmp error1
okay	jsr readst
	and #191
	beq drin
	jmp error2
drin	rts
